Java Technologies RequestDispatcher এর মাধ্যমে Forward এবং Include করা গাইড ও নোট

261

RequestDispatcher হলো Servlet API-র একটি গুরুত্বপূর্ণ ইন্টারফেস, যা একটি Servlet থেকে অন্য Servlet বা JSP-তে রিকোয়েস্ট Forward বা Include করার জন্য ব্যবহৃত হয়। এটি কন্ট্রোলার থেকে ভিউয়ে ডেটা পাঠানোর জন্য একটি আদর্শ পদ্ধতি।


RequestDispatcher এর কাজ

  1. Forward:
    একটি Servlet থেকে অন্য Servlet বা JSP-তে রিকোয়েস্ট সম্পূর্ণভাবে পাঠানো হয়। ক্লায়েন্ট এই স্থানান্তর সম্পর্কে জানে না।
  2. Include:
    একটি Servlet বা JSP-কে আরেকটি Servlet বা JSP-এর অংশ হিসেবে অন্তর্ভুক্ত করা হয়। এটি মূল রেসপন্সে অতিরিক্ত কন্টেন্ট যোগ করতে ব্যবহৃত হয়।

RequestDispatcher পদ্ধতি

RequestDispatcher ইন্টারফেসের দুটি প্রধান মেথড রয়েছে:

  1. void forward(ServletRequest request, ServletResponse response)
    রিকোয়েস্ট এবং রেসপন্স অন্য Servlet বা JSP-তে Forward করে।
  2. void include(ServletRequest request, ServletResponse response)
    অন্য Servlet বা JSP-এর আউটপুটকে মূল রেসপন্সে অন্তর্ভুক্ত করে।

RequestDispatcher এর মাধ্যমে Forward করা

উদাহরণ

Servlet থেকে Forward করা

Servlet1.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // রিকোয়েস্টের জন্য ডেটা সেট করা
        request.setAttribute("message", "Hello from Servlet1");

        // রিকোয়েস্ট Forward করা
        RequestDispatcher dispatcher = request.getRequestDispatcher("Servlet2");
        dispatcher.forward(request, response);
    }
}

Servlet2.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Forward থেকে প্রাপ্ত ডেটা রিসিভ করা
        String message = (String) request.getAttribute("message");

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1>" + message + "</h1>");
    }
}

web.xml

<web-app>
    <servlet>
        <servlet-name>Servlet1</servlet-name>
        <servlet-class>Servlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet1</servlet-name>
        <url-pattern>/servlet1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Servlet2</servlet-name>
        <servlet-class>Servlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet2</servlet-name>
        <url-pattern>/Servlet2</url-pattern>
    </servlet-mapping>
</web-app>

আউটপুট:

<h1>Hello from Servlet1</h1>

RequestDispatcher এর মাধ্যমে Include করা

উদাহরণ

Servlet থেকে Include করা

Servlet1.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("<h1>Welcome to Servlet1</h1>");
        
        // Servlet2 অন্তর্ভুক্ত করা
        RequestDispatcher dispatcher = request.getRequestDispatcher("Servlet2");
        dispatcher.include(request, response);

        out.println("<h1>Back to Servlet1</h1>");
    }
}

Servlet2.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("<p>This is content from Servlet2</p>");
    }
}

আউটপুট:

<h1>Welcome to Servlet1</h1>
<p>This is content from Servlet2</p>
<h1>Back to Servlet1</h1>

Forward এবং Include এর পার্থক্য

বৈশিষ্ট্যForwardInclude
উদ্দেশ্যসম্পূর্ণ রিকোয়েস্ট অন্য Servlet বা JSP-তে পাঠানো।মূল রেসপন্সে অন্য Servlet বা JSP যোগ করা।
কন্ট্রোল ট্রান্সফারকন্ট্রোল Forward করা Servlet বা JSP-তে যায়।কন্ট্রোল মূল Servlet বা JSP-তে থাকে।
ক্লায়েন্ট সচেতনতাক্লায়েন্ট Forward সম্পর্কে জানে না।ক্লায়েন্ট Include সম্পর্কে জানে না।

RequestDispatcher ব্যবহারের সুবিধা

  1. কোড পুনর্ব্যবহারযোগ্য:
    একাধিক Servlet বা JSP থেকে একই লজিক বা ডেটা ব্যবহার করা যায়।
  2. কন্টেন্ট অন্তর্ভুক্তি:
    বিভিন্ন সোর্স থেকে কন্টেন্ট একত্রিত করা যায়।
  3. লেয়ারড আর্কিটেকচার:
    লজিক এবং প্রেজেন্টেশন আলাদা রাখার জন্য Forward এবং Include ব্যবহৃত হয়।

RequestDispatcher Servlet এবং JSP-এর মধ্যে যোগাযোগ সহজ করে এবং ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়াকে আরও কার্যকর এবং সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...